<?php
/**
 * 发送邮件的控制器
 * 注：所有的邮件发送均使用sendEmail方法，这样保持在对邮件记录数据的时候能全部统计到.
 *
 * @author 高文杰 <gaowenjie_xy@126.com>
 */
import("@.ORG.Validation");
import("@.Action.class#phpmailer", '', '.php');

class EmailAction extends Action
{
    /** @type array 邮件配置 */
    public static $mailConfig = array(
        'charSet' => 'UTF-8',    // 设置邮件的字符编码，若不指定，则为'UTF-8'
        'from' => 'gaowenjie_xy@126.com',  // 发送短信服务器
        'fromName' => '高天杰',
        'host' => 'smtp.126.com',
        'username' => 'gaowenjie_xy',
        'password' => 'wenjie15...',
        );

    public function index()
    {
        if ($this->ispost()) {
            // 发送邮件
            $toEmail = $this->_post('toEmail');
            $title = $this->_post('title');
            $mailContent = $this->_post('mailContent');

            // 验证邮箱的格式
            if (empty($toEmail)) {
                $this->error('邮箱地址不能为空！');
            }

            if (!Validation::isEmailAddress($toEmail)) {
                $this->error('请填写正确的邮箱地址！');
            }

            if (empty($title) || empty($mailContent)) {
                $this->error('邮件标题和内容不能为空！');
            }

            // 发送邮件
            $email = self::sendEmail($toEmail, $title, $mailContent);

            if ($email) {
                $this->success('邮件发送成功，请注意查收！');
            } else {
                $this->error($mail);
            }
        }

        $this->display();
    }

    /**
     * 注:该方法应该放到model，但现在还无法准备的在model中调用PHPmailer的类，咱放置这里.
     *
     * 发送邮件
     */
    public static function sendEmail($address, $title, $message)
    {
        // 创建邮件发送类
        $mail = new PHPMailer();

        // 设置PHPMailer使用SMTP服务器发送Email
        $mail->IsSMTP();

        // 设置邮件的字符编码，若不指定，则为'UTF-8'
        $mail->CharSet = self::$mailConfig['charSet'];

        // 添加收件人地址，可以多次使用来添加多个收件人
        $mail->AddAddress($address);

        // 发送HTML的文本内容
         $mail->IsHTML(true);

        // 设置邮件正文
        $mail->Body = $message;

        // 设置邮件头的From字段。
        $mail->From = self::$mailConfig['from'];

        // 设置发件人名字
        $mail->FromName = self::$mailConfig['fromName'];

        // 设置邮件标题
        $mail->Subject = $title;

        // 设置SMTP服务器。
        $mail->Host = self::$mailConfig['host'];

        // 设置为"需要验证"
        $mail->SMTPAuth = true;

        // 设置用户名和密码。
        $mail->Username = self::$mailConfig['username'];
        $mail->Password = self::$mailConfig['password'];

        // 发送邮件。
        $sendEmail = $mail->Send();

        if ($sendEmail) {
            return true;
        } else {
            return($mail->ErrorInfo);
        }
    }
}
?>